home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.plaf.basic;
-
- import com.sun.java.swing.AbstractButton;
- import com.sun.java.swing.JButton;
- import com.sun.java.swing.SwingConstants;
- import com.sun.java.swing.UIManager;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Graphics;
-
- public class BasicArrowButton extends JButton implements SwingConstants {
- protected int direction;
-
- public BasicArrowButton(int direction) {
- this.setDirection(direction);
- ((Component)this).setBackground(UIManager.getColor("control"));
- }
-
- public int getDirection() {
- return this.direction;
- }
-
- public Dimension getMaximumSize() {
- return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
- }
-
- public Dimension getMinimumSize() {
- return new Dimension(5, 5);
- }
-
- public Dimension getPreferredSize() {
- return new Dimension(16, 16);
- }
-
- public boolean isFocusTraversable() {
- return false;
- }
-
- public void paint(Graphics g) {
- int w = ((Component)this).getSize().width;
- int h = ((Component)this).getSize().height;
- Color origColor = g.getColor();
- boolean isPressed = ((AbstractButton)this).getModel().isPressed();
- boolean isEnabled = ((Component)this).isEnabled();
- g.setColor(((Component)this).getBackground());
- g.fillRect(1, 1, w - 2, h - 2);
- if (isPressed) {
- g.setColor(UIManager.getColor("controlShadow"));
- g.drawRect(0, 0, w - 1, h - 1);
- } else {
- g.drawLine(0, 0, 0, h - 1);
- g.drawLine(1, 0, w - 2, 0);
- g.setColor(UIManager.getColor("controlHighlight"));
- g.drawLine(1, 1, 1, h - 3);
- g.drawLine(2, 1, w - 3, 1);
- g.setColor(UIManager.getColor("controlShadow"));
- g.drawLine(1, h - 2, w - 2, h - 2);
- g.drawLine(w - 2, 1, w - 2, h - 3);
- g.setColor(UIManager.getColor("controlDkShadow"));
- g.drawLine(0, h - 1, w - 1, h - 1);
- g.drawLine(w - 1, h - 1, w - 1, 0);
- }
-
- if (h >= 5 && w >= 5) {
- if (isPressed) {
- g.translate(1, 1);
- }
-
- int size = Math.min((h - 4) / 3, (w - 4) / 3);
- size = Math.max(size, 2);
- this.paintTriangle(g, (w - size) / 2, (h - size) / 2, size, this.direction, isEnabled);
- if (isPressed) {
- g.translate(-1, -1);
- }
-
- g.setColor(origColor);
- } else {
- g.setColor(origColor);
- }
- }
-
- public void paintTriangle(Graphics g, int x, int y, int size, int direction, boolean isEnabled) {
- Color oldColor = g.getColor();
- int j = 0;
- size = Math.max(size, 2);
- int mid = size / 2;
- g.translate(x, y);
- if (isEnabled) {
- g.setColor(UIManager.getColor("controlDkShadow"));
- } else {
- g.setColor(UIManager.getColor("controlShadow"));
- }
-
- switch (direction) {
- case 1:
- int var16;
- for(var16 = 0; var16 < size; ++var16) {
- g.drawLine(mid - var16, var16, mid + var16, var16);
- }
-
- if (!isEnabled) {
- g.setColor(UIManager.getColor("controlHighlight"));
- g.drawLine(mid - var16 + 2, var16, mid + var16, var16);
- }
- break;
- case 3:
- if (!isEnabled) {
- g.translate(1, 1);
- g.setColor(UIManager.getColor("controlHighlight"));
-
- for(int var14 = size - 1; var14 >= 0; --var14) {
- g.drawLine(j, mid - var14, j, mid + var14);
- ++j;
- }
-
- g.translate(-1, -1);
- g.setColor(UIManager.getColor("controlShadow"));
- }
-
- j = 0;
-
- for(int var15 = size - 1; var15 >= 0; --var15) {
- g.drawLine(j, mid - var15, j, mid + var15);
- ++j;
- }
- break;
- case 5:
- if (!isEnabled) {
- g.translate(1, 1);
- g.setColor(UIManager.getColor("controlHighlight"));
-
- for(int var12 = size - 1; var12 >= 0; --var12) {
- g.drawLine(mid - var12, j, mid + var12, j);
- ++j;
- }
-
- g.translate(-1, -1);
- g.setColor(UIManager.getColor("controlShadow"));
- }
-
- j = 0;
-
- for(int var13 = size - 1; var13 >= 0; --var13) {
- g.drawLine(mid - var13, j, mid + var13, j);
- ++j;
- }
- break;
- case 7:
- int i;
- for(i = 0; i < size; ++i) {
- g.drawLine(i, mid - i, i, mid + i);
- }
-
- if (!isEnabled) {
- g.setColor(UIManager.getColor("controlHighlight"));
- g.drawLine(i, mid - i + 2, i, mid + i);
- }
- }
-
- g.translate(-x, -y);
- g.setColor(oldColor);
- }
-
- public void requestFocus() {
- }
-
- public void setDirection(int dir) {
- this.direction = dir;
- }
- }
-